/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package net.jonbuck.tassoo.model;

import java.util.Date;

import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Task</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getActualTime <em>Actual Time</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getAttachmentContainer <em>Attachment Container</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getCategory <em>Category</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getComment <em>Comment</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getCompletedDate <em>Completed Date</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getContainer <em>Container</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getEstimatedTime <em>Estimated Time</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getDueDate <em>Due Date</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getPosition <em>Position</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getPriority <em>Priority</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#isRecurrenceIndicator <em>Recurrence Indicator</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getRecurrenceSettings <em>Recurrence Settings</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#isReminderIndicator <em>Reminder Indicator</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getStartDate <em>Start Date</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getStatus <em>Status</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getTask <em>Task</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getTaskId <em>Task Id</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getTaskName <em>Task Name</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getTaskSummary <em>Task Summary</em>}</li>
 *   <li>{@link net.jonbuck.tassoo.model.Task#getType <em>Type</em>}</li>
 * </ul>
 * </p>
 *
 * @see net.jonbuck.tassoo.model.TassooPackage#getTask()
 * @model
 * @generated
 */
public interface Task extends BaseObject {
	/**
	 * Returns the value of the '<em><b>Actual Time</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Actual Time</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Actual Time</em>' attribute.
	 * @see #setActualTime(String)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_ActualTime()
	 * @model
	 * @generated
	 */
	String getActualTime();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getActualTime <em>Actual Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Actual Time</em>' attribute.
	 * @see #getActualTime()
	 * @generated
	 */
	void setActualTime(String value);

	/**
	 * Returns the value of the '<em><b>Attachment Container</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Attachment Container</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Attachment Container</em>' containment reference.
	 * @see #setAttachmentContainer(AttachmentContainer)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_AttachmentContainer()
	 * @model containment="true"
	 * @generated
	 */
	AttachmentContainer getAttachmentContainer();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getAttachmentContainer <em>Attachment Container</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Attachment Container</em>' containment reference.
	 * @see #getAttachmentContainer()
	 * @generated
	 */
	void setAttachmentContainer(AttachmentContainer value);

	/**
	 * Returns the value of the '<em><b>Category</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Category</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Category</em>' reference.
	 * @see #setCategory(Category)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Category()
	 * @model required="true"
	 * @generated
	 */
	Category getCategory();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getCategory <em>Category</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Category</em>' reference.
	 * @see #getCategory()
	 * @generated
	 */
	void setCategory(Category value);

	/**
	 * Returns the value of the '<em><b>Comment</b></em>' containment reference list.
	 * The list contents are of type {@link net.jonbuck.tassoo.model.Comment}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Comment</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Comment</em>' containment reference list.
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Comment()
	 * @model containment="true"
	 * @generated
	 */
	EList<Comment> getComment();

	/**
	 * Returns the value of the '<em><b>Completed Date</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Completed Date</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Completed Date</em>' attribute.
	 * @see #setCompletedDate(Date)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_CompletedDate()
	 * @model
	 * @generated
	 */
	Date getCompletedDate();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getCompletedDate <em>Completed Date</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Completed Date</em>' attribute.
	 * @see #getCompletedDate()
	 * @generated
	 */
	void setCompletedDate(Date value);

	/**
	 * Returns the value of the '<em><b>Container</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Container</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Container</em>' reference.
	 * @see #setContainer(Container)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Container()
	 * @model
	 * @generated
	 */
	Container getContainer();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getContainer <em>Container</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Container</em>' reference.
	 * @see #getContainer()
	 * @generated
	 */
	void setContainer(Container value);

	/**
	 * Returns the value of the '<em><b>Estimated Time</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Estimated Time</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Estimated Time</em>' attribute.
	 * @see #setEstimatedTime(String)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_EstimatedTime()
	 * @model
	 * @generated
	 */
	String getEstimatedTime();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getEstimatedTime <em>Estimated Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Estimated Time</em>' attribute.
	 * @see #getEstimatedTime()
	 * @generated
	 */
	void setEstimatedTime(String value);

	/**
	 * Returns the value of the '<em><b>Due Date</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Due Date</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Due Date</em>' attribute.
	 * @see #setDueDate(Date)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_DueDate()
	 * @model
	 * @generated
	 */
	Date getDueDate();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getDueDate <em>Due Date</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Due Date</em>' attribute.
	 * @see #getDueDate()
	 * @generated
	 */
	void setDueDate(Date value);

	/**
	 * Returns the value of the '<em><b>Position</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Position</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Position</em>' attribute.
	 * @see #setPosition(int)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Position()
	 * @model
	 * @generated
	 */
	int getPosition();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getPosition <em>Position</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Position</em>' attribute.
	 * @see #getPosition()
	 * @generated
	 */
	void setPosition(int value);

	/**
	 * Returns the value of the '<em><b>Priority</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Priority</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Priority</em>' reference.
	 * @see #setPriority(Priority)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Priority()
	 * @model required="true"
	 * @generated
	 */
	Priority getPriority();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getPriority <em>Priority</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Priority</em>' reference.
	 * @see #getPriority()
	 * @generated
	 */
	void setPriority(Priority value);

	/**
	 * Returns the value of the '<em><b>Recurrence Indicator</b></em>' attribute.
	 * The default value is <code>"false"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Recurrence Indicator</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Recurrence Indicator</em>' attribute.
	 * @see #setRecurrenceIndicator(boolean)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_RecurrenceIndicator()
	 * @model default="false"
	 * @generated
	 */
	boolean isRecurrenceIndicator();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#isRecurrenceIndicator <em>Recurrence Indicator</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Recurrence Indicator</em>' attribute.
	 * @see #isRecurrenceIndicator()
	 * @generated
	 */
	void setRecurrenceIndicator(boolean value);

	/**
	 * Returns the value of the '<em><b>Recurrence Settings</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Recurrence Settings</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Recurrence Settings</em>' reference.
	 * @see #setRecurrenceSettings(Recurrence)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_RecurrenceSettings()
	 * @model
	 * @generated
	 */
	Recurrence getRecurrenceSettings();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getRecurrenceSettings <em>Recurrence Settings</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Recurrence Settings</em>' reference.
	 * @see #getRecurrenceSettings()
	 * @generated
	 */
	void setRecurrenceSettings(Recurrence value);

	/**
	 * Returns the value of the '<em><b>Reminder Indicator</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reminder Indicator</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reminder Indicator</em>' attribute.
	 * @see #setReminderIndicator(boolean)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_ReminderIndicator()
	 * @model
	 * @generated
	 */
	boolean isReminderIndicator();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#isReminderIndicator <em>Reminder Indicator</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reminder Indicator</em>' attribute.
	 * @see #isReminderIndicator()
	 * @generated
	 */
	void setReminderIndicator(boolean value);

	/**
	 * Returns the value of the '<em><b>Start Date</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Start Date</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Start Date</em>' attribute.
	 * @see #setStartDate(Date)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_StartDate()
	 * @model
	 * @generated
	 */
	Date getStartDate();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getStartDate <em>Start Date</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Start Date</em>' attribute.
	 * @see #getStartDate()
	 * @generated
	 */
	void setStartDate(Date value);

	/**
	 * Returns the value of the '<em><b>Status</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Status</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Status</em>' reference.
	 * @see #setStatus(Status)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Status()
	 * @model required="true"
	 * @generated
	 */
	Status getStatus();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getStatus <em>Status</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Status</em>' reference.
	 * @see #getStatus()
	 * @generated
	 */
	void setStatus(Status value);

	/**
	 * Returns the value of the '<em><b>Task</b></em>' containment reference list.
	 * The list contents are of type {@link net.jonbuck.tassoo.model.Task}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Task</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Task</em>' containment reference list.
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Task()
	 * @model containment="true"
	 * @generated
	 */
	EList<Task> getTask();

	/**
	 * Returns the value of the '<em><b>Task Id</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Task Id</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Task Id</em>' attribute.
	 * @see #setTaskId(int)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_TaskId()
	 * @model id="true" required="true"
	 * @generated
	 */
	int getTaskId();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getTaskId <em>Task Id</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Task Id</em>' attribute.
	 * @see #getTaskId()
	 * @generated
	 */
	void setTaskId(int value);

	/**
	 * Returns the value of the '<em><b>Task Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Task Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Task Name</em>' attribute.
	 * @see #setTaskName(String)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_TaskName()
	 * @model
	 * @generated
	 */
	String getTaskName();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getTaskName <em>Task Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Task Name</em>' attribute.
	 * @see #getTaskName()
	 * @generated
	 */
	void setTaskName(String value);

	/**
	 * Returns the value of the '<em><b>Task Summary</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Task Summary</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Task Summary</em>' attribute.
	 * @see #setTaskSummary(String)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_TaskSummary()
	 * @model
	 * @generated
	 */
	String getTaskSummary();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getTaskSummary <em>Task Summary</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Task Summary</em>' attribute.
	 * @see #getTaskSummary()
	 * @generated
	 */
	void setTaskSummary(String value);

	/**
	 * Returns the value of the '<em><b>Type</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Type</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Type</em>' reference.
	 * @see #setType(Type)
	 * @see net.jonbuck.tassoo.model.TassooPackage#getTask_Type()
	 * @model required="true"
	 * @generated
	 */
	Type getType();

	/**
	 * Sets the value of the '{@link net.jonbuck.tassoo.model.Task#getType <em>Type</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Type</em>' reference.
	 * @see #getType()
	 * @generated
	 */
	void setType(Type value);

} // Task
